{
  "cells": [
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "5tOOrpA1tFpJ"
      },
      "outputs": [],
      "source": [
        "!pip install flash-attn --no-build-isolation\n",
        "!pip install tiktoken\n",
        "!pip install datasets"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "5QHEsR5nKeZP"
      },
      "outputs": [],
      "source": [
        "!rm -rf /content/Model/pretrain.rar"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "MxMGjBNDRF7N"
      },
      "outputs": [],
      "source": [
        "!unrar x /content/Model/pretrain.rar"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "wDgyjxoQwFcB"
      },
      "outputs": [],
      "source": [
        "import sys\n",
        "\n",
        "# 将某个路径添加到系统路径\n",
        "sys.path.append('/content/Model')"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "pNop2ksNwHKg"
      },
      "outputs": [],
      "source": [
        "import time\n",
        "import numpy as np\n",
        "import pandas as pd\n",
        "import torch\n",
        "from transformers import Trainer, TrainerCallback, TrainingArguments\n",
        "from arguments import SFTArguments\n",
        "from datasets import load_dataset\n",
        "from qwen.modeling_qwen import QWenLMHeadModel\n",
        "from qwen.tokenization_qwen import QWenTokenizer"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "MtZxdo0dwMej"
      },
      "outputs": [],
      "source": [
        "sft_args = SFTArguments()"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "LTbBsL7NwOVD"
      },
      "outputs": [],
      "source": [
        "PROMPT_DICT = {\n",
        "    \"prompt_input\": (\"你是一个助手 \" \"用户: {instruction} {input} 回答: \"),\n",
        "    \"prompt_no_input\": (\"你是一个助手 \" \"用户: {instruction}  回答: \"),\n",
        "}"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 49,
          "referenced_widgets": [
            "868a0149d7dc4103b7c3ab8513828bc7",
            "dbf72bf3f088460bb3193ce008b102e9",
            "4d32fb49343a480199f13c1d44ba9124",
            "6b32d2ae9f774b7da4490d682610fbd8",
            "153dd10f132d44f18de6e69f0190d166",
            "600f6379e899477fab162c40104e8b84",
            "6c3c933318eb4c5288ab2880b9e0f1db",
            "2616970b2e8d490580869007c45a2019",
            "c0bd659119e74e22ad7ceea4adcd84b1",
            "acc29fb45d074a5fa79e114475655ddd",
            "eaa603c8bb6d427791486026d491d0e8"
          ]
        },
        "id": "DGJfl6wuwQCl",
        "outputId": "e07f13fc-836d-4818-99d7-31626d93e971"
      },
      "outputs": [
        {
          "data": {
            "application/vnd.jupyter.widget-view+json": {
              "model_id": "868a0149d7dc4103b7c3ab8513828bc7",
              "version_major": 2,
              "version_minor": 0
            },
            "text/plain": [
              "Generating train split: 0 examples [00:00, ? examples/s]"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        }
      ],
      "source": [
        "dataset = load_dataset(\n",
        "    path=\"parquet\", data_files=sft_args.SFT_FILES, split=\"train\", keep_in_memory=False\n",
        ")"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "EVS7QZqfwTZn",
        "outputId": "9996bb54-1c62-442d-965b-2e9ab36116b3"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "vicab size: 151851\n"
          ]
        }
      ],
      "source": [
        "tokenizer = QWenTokenizer.from_pretrained(sft_args.tokenizer_dir)\n",
        "print(f\"vicab size: {len(tokenizer)}\")\n",
        "tokenizer.pad_token_id = tokenizer.im_end_id\n",
        "map_dtype = np.uint16 if len(tokenizer) < 65535 else np.uint32"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "d_P1x6XCwVYe"
      },
      "outputs": [],
      "source": [
        "def format_example(example):\n",
        "    prompt_input, prompt_no_input = (\n",
        "        PROMPT_DICT[\"prompt_input\"],\n",
        "        PROMPT_DICT[\"prompt_no_input\"],\n",
        "    )\n",
        "    if example.get(\"input\"):\n",
        "        target = example[\"output\"] + \"<|im_end|>\"\n",
        "        context = prompt_input.format_map(\n",
        "            dict(instruction=example[\"instruction\"], input=example[\"input\"])\n",
        "        )\n",
        "\n",
        "        example[\"context\"] = context\n",
        "        example[\"target\"] = target\n",
        "    else:\n",
        "        target = example[\"output\"] + \"<|im_end|>\"\n",
        "        context = prompt_no_input.format_map(dict(instruction=example[\"instruction\"]))\n",
        "\n",
        "        example[\"context\"] = context\n",
        "        example[\"target\"] = target\n",
        "    return example"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "Gl3dT4g_wXuJ"
      },
      "outputs": [],
      "source": [
        "def preprocess(example):\n",
        "    prompt = example[\"context\"]\n",
        "    target = example[\"target\"]\n",
        "    input_ids = tokenizer(\n",
        "        prompt + target,\n",
        "        return_tensors=\"pt\",\n",
        "        padding=\"longest\",\n",
        "        max_length=512,\n",
        "        truncation=True,\n",
        "    )\n",
        "    seq_ids = tokenizer(\n",
        "        prompt,\n",
        "        return_tensors=\"pt\",\n",
        "        padding=\"longest\",\n",
        "        max_length=512,\n",
        "        truncation=True,\n",
        "    )\n",
        "    input_ids_len = seq_ids.input_ids.ne(tokenizer.pad_token_id).sum().item()\n",
        "\n",
        "    return {\"input_ids\": input_ids.input_ids[0], \"seq_len\": input_ids_len}"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 255,
          "referenced_widgets": [
            "f9efbbb7be5c46488ad021a1ace9fd80",
            "96168011c25d4f269cc82754a6f97622",
            "bd57deff59284825a56a1d2386a19266",
            "fc325d83a42f4d228ad1c9db11f18958",
            "b7e9383cf2f347e2959419119a51bfe3",
            "8d4447bafcba420c96bd550a49f50b38",
            "1e4426b653db4a27b127d76582c48f21",
            "42f60f61ee2341e69be7b9f877647295",
            "b0e2c759c2a54081a9efb512b477ea9a",
            "7f3fbc1ad72648b7aa5fcba1134f7fd0",
            "a1c0416c8f2c4f9abb390bc8c4488abd",
            "0836e877651f4efca4f234762d0eb139",
            "ec9b067b71924f7f99f487a1538e8dab",
            "19b71f55d6da433ba94d7d509f6c9c51",
            "6a2494abc0c349768fe64ad87ccc509d",
            "8e6e875328a8494c893eb41d259648e6",
            "0badae51ca3f4740877d818c39a3a2f5",
            "d27330e81c4b4b7e93a673b05197dbb2",
            "2e96c66de13c4f4ea2ffa29f5fcce22b",
            "a441c374736c4e0f9ca2a562fca70fd4",
            "2e53e8f5ff1a480b8276038bbd9dac80",
            "ee4d3158f0b74faca7b70c0caccbbfba"
          ]
        },
        "id": "doGe6JY5wZuD",
        "outputId": "ba049a95-68c0-41b8-e4f1-81444a7ef60a"
      },
      "outputs": [
        {
          "data": {
            "application/vnd.jupyter.widget-view+json": {
              "model_id": "f9efbbb7be5c46488ad021a1ace9fd80",
              "version_major": 2,
              "version_minor": 0
            },
            "text/plain": [
              "Map (num_proc=32):   0%|          | 0/1464919 [00:00<?, ? examples/s]"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "1\n",
            "Dataset({\n",
            "    features: ['instruction', 'input', 'output', 'context', 'target'],\n",
            "    num_rows: 1464919\n",
            "})\n"
          ]
        },
        {
          "data": {
            "application/vnd.jupyter.widget-view+json": {
              "model_id": "0836e877651f4efca4f234762d0eb139",
              "version_major": 2,
              "version_minor": 0
            },
            "text/plain": [
              "Map (num_proc=32):   0%|          | 0/1464919 [00:00<?, ? examples/s]"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "2\n",
            "Dataset({\n",
            "    features: ['instruction', 'input', 'output', 'context', 'target', 'input_ids', 'seq_len'],\n",
            "    num_rows: 1464919\n",
            "})\n"
          ]
        }
      ],
      "source": [
        "tokenized_datasets = dataset.map(\n",
        "    function=format_example, num_proc=32, keep_in_memory=False\n",
        ")\n",
        "print(\"1\")\n",
        "print(tokenized_datasets)\n",
        "tokenized_datasets = tokenized_datasets.map(\n",
        "    function=preprocess, num_proc=32, keep_in_memory=False\n",
        ").shuffle(23333)\n",
        "print(\"2\")\n",
        "print(tokenized_datasets)"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "CWLl2WsAwbdY"
      },
      "outputs": [],
      "source": [
        "def data_collator(fetures):\n",
        "    len_ids = [len(feture[\"input_ids\"]) for feture in fetures]\n",
        "    longest = max(len_ids) + 1\n",
        "    input_ids = []\n",
        "    attention_mask_list = []\n",
        "    postion_ids_list = []\n",
        "    labels_list = []\n",
        "    for ids_l, feture in sorted(zip(len_ids, fetures), key=lambda x: -x[0]):\n",
        "        ids = feture[\"input_ids\"]\n",
        "        seq_len = feture[\"seq_len\"]\n",
        "        labels = [-100] * seq_len + ids[seq_len:] + [-100] * (longest - ids_l)\n",
        "        ids = ids + [tokenizer.im_end_id] * (longest - ids_l)\n",
        "        _ids = torch.LongTensor(ids)\n",
        "        labels_list.append(torch.LongTensor(labels))\n",
        "        input_ids.append(_ids)\n",
        "    input_ids = torch.stack(input_ids)\n",
        "    labels = torch.stack(labels_list)\n",
        "\n",
        "    return {\"input_ids\": input_ids, \"labels\": labels}"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "vBmEwb5RwdUq"
      },
      "outputs": [],
      "source": [
        "model = QWenLMHeadModel.from_pretrained('/content/drive/MyDrive/pretrain')\n",
        "\n",
        "model_size = sum(t.numel() for t in model.parameters())\n",
        "print(f\"Qwen size: {model_size / 1000**2:.2f}M parameters\")"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "EMWFMyXbwe-h",
        "outputId": "dde5aa7f-3752-4b2a-bbea-99d0fcbc5e84"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "m\n",
            "DatasetDict({\n",
            "    train: Dataset({\n",
            "        features: ['instruction', 'input', 'output', 'context', 'target', 'input_ids', 'seq_len'],\n",
            "        num_rows: 1460823\n",
            "    })\n",
            "    test: Dataset({\n",
            "        features: ['instruction', 'input', 'output', 'context', 'target', 'input_ids', 'seq_len'],\n",
            "        num_rows: 4096\n",
            "    })\n",
            "})\n"
          ]
        }
      ],
      "source": [
        "class EmptyCudaCacheCallback(TrainerCallback):\n",
        "    log_cnt = 0\n",
        "\n",
        "    def on_log(self, args, state, control, logs=None, **kwargs):\n",
        "        self.log_cnt += 1\n",
        "        if self.log_cnt % 5 == 0:\n",
        "            torch.cuda.empty_cache()\n",
        "\n",
        "\n",
        "empty_cuda_cahce = EmptyCudaCacheCallback()\n",
        "\n",
        "\n",
        "my_datasets = tokenized_datasets.train_test_split(test_size=4096)\n",
        "print(\"m\")\n",
        "print(my_datasets)"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "Dx--F9pQwkDF",
        "outputId": "43d01fe1-cc59-4fac-fa94-ea07d1ae8357"
      },
      "outputs": [
        {
          "name": "stderr",
          "output_type": "stream",
          "text": [
            "/usr/local/lib/python3.11/dist-packages/transformers/training_args.py:1575: FutureWarning: `evaluation_strategy` is deprecated and will be removed in version 4.46 of 🤗 Transformers. Use `eval_strategy` instead\n",
            "  warnings.warn(\n",
            "PyTorch: setting up devices\n"
          ]
        }
      ],
      "source": [
        "args = TrainingArguments(\n",
        "    output_dir=sft_args.model_save_dir,\n",
        "    per_device_train_batch_size=10,\n",
        "    gradient_accumulation_steps=2,\n",
        "    num_train_epochs=3,\n",
        "    weight_decay=0.1,\n",
        "    warmup_steps=0,\n",
        "    learning_rate=6e-5,\n",
        "    ddp_find_unused_parameters=False,\n",
        "    evaluation_strategy=\"steps\",\n",
        "    eval_steps=150000,\n",
        "    save_steps=150000,\n",
        "    save_total_limit=3,\n",
        "    report_to=\"tensorboard\",\n",
        "    optim=\"adamw_torch\",\n",
        "    remove_unused_columns=False,\n",
        "    lr_scheduler_type=\"cosine\",\n",
        "    bf16=True,\n",
        "    logging_steps=10,\n",
        "    log_level=\"info\",\n",
        "    logging_first_step=True,\n",
        ")"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "yiCrxCJ8wnBo",
        "outputId": "8d8e46f3-94b0-4a7a-95ab-0f94c6661f68"
      },
      "outputs": [
        {
          "name": "stderr",
          "output_type": "stream",
          "text": [
            "<ipython-input-24-97e671caa25e>:1: FutureWarning: `tokenizer` is deprecated and will be removed in version 5.0.0 for `Trainer.__init__`. Use `processing_class` instead.\n",
            "  trainer = Trainer(\n",
            "Using auto half precision backend\n"
          ]
        }
      ],
      "source": [
        "trainer = Trainer(\n",
        "    model=model,\n",
        "    tokenizer=tokenizer,\n",
        "    args=args,\n",
        "    data_collator=data_collator,\n",
        "    train_dataset=my_datasets[\"train\"],\n",
        "    eval_dataset=my_datasets[\"test\"],\n",
        "    callbacks=[empty_cuda_cahce],\n",
        ")"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "colab": {
          "background_save": true,
          "base_uri": "https://localhost:8080/",
          "height": 272
        },
        "id": "XHXdmj5HwovC",
        "outputId": "a468e251-98aa-41d5-df72-5290e84b8a43"
      },
      "outputs": [
        {
          "name": "stderr",
          "output_type": "stream",
          "text": [
            "***** Running training *****\n",
            "  Num examples = 1,460,823\n",
            "  Num Epochs = 3\n",
            "  Instantaneous batch size per device = 10\n",
            "  Total train batch size (w. parallel, distributed & accumulation) = 20\n",
            "  Gradient Accumulation steps = 2\n",
            "  Total optimization steps = 219,123\n",
            "  Number of trainable parameters = 1,431,996,416\n"
          ]
        },
        {
          "data": {
            "text/html": [
              "\n",
              "    <div>\n",
              "      \n",
              "      <progress value='219123' max='219123' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
              "      [219123/219123 22:21:03, Epoch 2/3]\n",
              "    </div>\n",
              "    <table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              " <tr style=\"text-align: left;\">\n",
              "      <th>Step</th>\n",
              "      <th>Training Loss</th>\n",
              "      <th>Validation Loss</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <td>150000</td>\n",
              "      <td>1.821200</td>\n",
              "      <td>1.850734</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table><p>"
            ],
            "text/plain": [
              "<IPython.core.display.HTML object>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "name": "stderr",
          "output_type": "stream",
          "text": [
            "\n",
            "***** Running Evaluation *****\n",
            "  Num examples = 4096\n",
            "  Batch size = 8\n",
            "Saving model checkpoint to /content/drive/MyDrive/Model/save/checkpoint-150000\n",
            "Configuration saved in /content/drive/MyDrive/Model/save/checkpoint-150000/config.json\n",
            "Configuration saved in /content/drive/MyDrive/Model/save/checkpoint-150000/generation_config.json\n",
            "Model weights saved in /content/drive/MyDrive/Model/save/checkpoint-150000/model.safetensors\n",
            "tokenizer config file saved in /content/drive/MyDrive/Model/save/checkpoint-150000/tokenizer_config.json\n",
            "Special tokens file saved in /content/drive/MyDrive/Model/save/checkpoint-150000/special_tokens_map.json\n",
            "Saving model checkpoint to /content/drive/MyDrive/Model/save/checkpoint-219123\n",
            "Configuration saved in /content/drive/MyDrive/Model/save/checkpoint-219123/config.json\n",
            "Configuration saved in /content/drive/MyDrive/Model/save/checkpoint-219123/generation_config.json\n",
            "Model weights saved in /content/drive/MyDrive/Model/save/checkpoint-219123/model.safetensors\n",
            "tokenizer config file saved in /content/drive/MyDrive/Model/save/checkpoint-219123/tokenizer_config.json\n",
            "Special tokens file saved in /content/drive/MyDrive/Model/save/checkpoint-219123/special_tokens_map.json\n",
            "\n",
            "\n",
            "Training completed. Do not forget to share your model on huggingface.co/models =)\n",
            "\n",
            "\n"
          ]
        },
        {
          "data": {
            "text/plain": [
              "TrainOutput(global_step=219123, training_loss=1.8196237815062772, metrics={'train_runtime': 80468.6026, 'train_samples_per_second': 54.462, 'train_steps_per_second': 2.723, 'total_flos': 8.403894821479772e+18, 'train_loss': 1.8196237815062772, 'epoch': 2.9999657728825393})"
            ]
          },
          "execution_count": 25,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "trainer.train()"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "colab": {
          "background_save": true
        },
        "id": "36Mc381BwqR3",
        "outputId": "1d75f64d-d312-438a-da03-982c6d46d93e"
      },
      "outputs": [
        {
          "name": "stderr",
          "output_type": "stream",
          "text": [
            "\n",
            "***** Running Evaluation *****\n",
            "  Num examples = 4096\n",
            "  Batch size = 8\n"
          ]
        },
        {
          "data": {
            "text/html": [
              "\n",
              "    <div>\n",
              "      \n",
              "      <progress value='512' max='512' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
              "      [512/512 00:22]\n",
              "    </div>\n",
              "    "
            ],
            "text/plain": [
              "<IPython.core.display.HTML object>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "name": "stderr",
          "output_type": "stream",
          "text": [
            "Saving model checkpoint to /content/drive/MyDrive/Model/save\n",
            "Configuration saved in /content/drive/MyDrive/Model/save/config.json\n",
            "Configuration saved in /content/drive/MyDrive/Model/save/generation_config.json\n"
          ]
        },
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Perplexity: 6.36\n"
          ]
        },
        {
          "name": "stderr",
          "output_type": "stream",
          "text": [
            "Model weights saved in /content/drive/MyDrive/Model/save/model.safetensors\n",
            "tokenizer config file saved in /content/drive/MyDrive/Model/save/tokenizer_config.json\n",
            "Special tokens file saved in /content/drive/MyDrive/Model/save/special_tokens_map.json\n"
          ]
        }
      ],
      "source": [
        "eval_results = trainer.evaluate()\n",
        "print(f\"Perplexity: {np.exp(eval_results['eval_loss']):.2f}\")\n",
        "loss_log = pd.DataFrame(trainer.state.log_history)\n",
        "trainer.save_model(sft_args.model_save_dir)"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "G1Vx7KEUxmRt"
      },
      "outputs": [],
      "source": []
    }
  ],
  "metadata": {
    "accelerator": "GPU",
    "colab": {
      "gpuType": "A100",
      "machine_shape": "hm",
      "provenance": []
    },
    "kernelspec": {
      "display_name": "Python 3",
      "name": "python3"
    },
    "language_info": {
      "name": "python"
    },
    "widgets": {
      "application/vnd.jupyter.widget-state+json": {
        "0836e877651f4efca4f234762d0eb139": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "HBoxModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HBoxModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HBoxView",
            "box_style": "",
            "children": [
              "IPY_MODEL_ec9b067b71924f7f99f487a1538e8dab",
              "IPY_MODEL_19b71f55d6da433ba94d7d509f6c9c51",
              "IPY_MODEL_6a2494abc0c349768fe64ad87ccc509d"
            ],
            "layout": "IPY_MODEL_8e6e875328a8494c893eb41d259648e6"
          }
        },
        "0badae51ca3f4740877d818c39a3a2f5": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "153dd10f132d44f18de6e69f0190d166": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "19b71f55d6da433ba94d7d509f6c9c51": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "FloatProgressModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "FloatProgressModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "ProgressView",
            "bar_style": "success",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_2e96c66de13c4f4ea2ffa29f5fcce22b",
            "max": 1464919,
            "min": 0,
            "orientation": "horizontal",
            "style": "IPY_MODEL_a441c374736c4e0f9ca2a562fca70fd4",
            "value": 1464919
          }
        },
        "1e4426b653db4a27b127d76582c48f21": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "DescriptionStyleModel",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "DescriptionStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "description_width": ""
          }
        },
        "2616970b2e8d490580869007c45a2019": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": "20px"
          }
        },
        "2e53e8f5ff1a480b8276038bbd9dac80": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "2e96c66de13c4f4ea2ffa29f5fcce22b": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "42f60f61ee2341e69be7b9f877647295": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "4d32fb49343a480199f13c1d44ba9124": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "FloatProgressModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "FloatProgressModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "ProgressView",
            "bar_style": "success",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_2616970b2e8d490580869007c45a2019",
            "max": 1,
            "min": 0,
            "orientation": "horizontal",
            "style": "IPY_MODEL_c0bd659119e74e22ad7ceea4adcd84b1",
            "value": 1
          }
        },
        "600f6379e899477fab162c40104e8b84": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "6a2494abc0c349768fe64ad87ccc509d": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "HTMLModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HTMLModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HTMLView",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_2e53e8f5ff1a480b8276038bbd9dac80",
            "placeholder": "​",
            "style": "IPY_MODEL_ee4d3158f0b74faca7b70c0caccbbfba",
            "value": " 1464919/1464919 [03:17&lt;00:00, 609.21 examples/s]"
          }
        },
        "6b32d2ae9f774b7da4490d682610fbd8": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "HTMLModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HTMLModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HTMLView",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_acc29fb45d074a5fa79e114475655ddd",
            "placeholder": "​",
            "style": "IPY_MODEL_eaa603c8bb6d427791486026d491d0e8",
            "value": " 1464919/0 [00:02&lt;00:00, 617396.36 examples/s]"
          }
        },
        "6c3c933318eb4c5288ab2880b9e0f1db": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "DescriptionStyleModel",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "DescriptionStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "description_width": ""
          }
        },
        "7f3fbc1ad72648b7aa5fcba1134f7fd0": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "868a0149d7dc4103b7c3ab8513828bc7": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "HBoxModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HBoxModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HBoxView",
            "box_style": "",
            "children": [
              "IPY_MODEL_dbf72bf3f088460bb3193ce008b102e9",
              "IPY_MODEL_4d32fb49343a480199f13c1d44ba9124",
              "IPY_MODEL_6b32d2ae9f774b7da4490d682610fbd8"
            ],
            "layout": "IPY_MODEL_153dd10f132d44f18de6e69f0190d166"
          }
        },
        "8d4447bafcba420c96bd550a49f50b38": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "8e6e875328a8494c893eb41d259648e6": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "96168011c25d4f269cc82754a6f97622": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "HTMLModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HTMLModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HTMLView",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_8d4447bafcba420c96bd550a49f50b38",
            "placeholder": "​",
            "style": "IPY_MODEL_1e4426b653db4a27b127d76582c48f21",
            "value": "Map (num_proc=32): 100%"
          }
        },
        "a1c0416c8f2c4f9abb390bc8c4488abd": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "DescriptionStyleModel",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "DescriptionStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "description_width": ""
          }
        },
        "a441c374736c4e0f9ca2a562fca70fd4": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "ProgressStyleModel",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "ProgressStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "bar_color": null,
            "description_width": ""
          }
        },
        "acc29fb45d074a5fa79e114475655ddd": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "b0e2c759c2a54081a9efb512b477ea9a": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "ProgressStyleModel",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "ProgressStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "bar_color": null,
            "description_width": ""
          }
        },
        "b7e9383cf2f347e2959419119a51bfe3": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "bd57deff59284825a56a1d2386a19266": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "FloatProgressModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "FloatProgressModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "ProgressView",
            "bar_style": "success",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_42f60f61ee2341e69be7b9f877647295",
            "max": 1464919,
            "min": 0,
            "orientation": "horizontal",
            "style": "IPY_MODEL_b0e2c759c2a54081a9efb512b477ea9a",
            "value": 1464919
          }
        },
        "c0bd659119e74e22ad7ceea4adcd84b1": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "ProgressStyleModel",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "ProgressStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "bar_color": null,
            "description_width": ""
          }
        },
        "d27330e81c4b4b7e93a673b05197dbb2": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "DescriptionStyleModel",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "DescriptionStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "description_width": ""
          }
        },
        "dbf72bf3f088460bb3193ce008b102e9": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "HTMLModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HTMLModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HTMLView",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_600f6379e899477fab162c40104e8b84",
            "placeholder": "​",
            "style": "IPY_MODEL_6c3c933318eb4c5288ab2880b9e0f1db",
            "value": "Generating train split: "
          }
        },
        "eaa603c8bb6d427791486026d491d0e8": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "DescriptionStyleModel",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "DescriptionStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "description_width": ""
          }
        },
        "ec9b067b71924f7f99f487a1538e8dab": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "HTMLModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HTMLModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HTMLView",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_0badae51ca3f4740877d818c39a3a2f5",
            "placeholder": "​",
            "style": "IPY_MODEL_d27330e81c4b4b7e93a673b05197dbb2",
            "value": "Map (num_proc=32): 100%"
          }
        },
        "ee4d3158f0b74faca7b70c0caccbbfba": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "DescriptionStyleModel",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "DescriptionStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "description_width": ""
          }
        },
        "f9efbbb7be5c46488ad021a1ace9fd80": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "HBoxModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HBoxModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HBoxView",
            "box_style": "",
            "children": [
              "IPY_MODEL_96168011c25d4f269cc82754a6f97622",
              "IPY_MODEL_bd57deff59284825a56a1d2386a19266",
              "IPY_MODEL_fc325d83a42f4d228ad1c9db11f18958"
            ],
            "layout": "IPY_MODEL_b7e9383cf2f347e2959419119a51bfe3"
          }
        },
        "fc325d83a42f4d228ad1c9db11f18958": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "HTMLModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HTMLModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HTMLView",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_7f3fbc1ad72648b7aa5fcba1134f7fd0",
            "placeholder": "​",
            "style": "IPY_MODEL_a1c0416c8f2c4f9abb390bc8c4488abd",
            "value": " 1464919/1464919 [00:17&lt;00:00, 79132.09 examples/s]"
          }
        }
      }
    }
  },
  "nbformat": 4,
  "nbformat_minor": 0
}